/*
 * 编写一个程序,记录捐助资金.
 * 要求用户输入捐献者数目,然后要求用户输入每个捐献者的姓名和款项.
 * 信息被储存在一个动态分配的结构数组中.
 * 每个结构有两个成员:用来存储名字的字符数组(或string对象)和用来存储款项的double成员.
 * 读取所有数据后,程序将显示所有捐款超过10000的捐款者的姓名和款项数目.
 * 列表前应该包含一个标题,指出下面的捐款者是重要捐款者(Grand Partrons).
 * 然后,程序将列出其他捐款者,该列表要以Patrons开头.如果某种类别没有捐款者,则程序将打印单词"none".
 * 程序只显示者两种类别,而不进行排序.
*/
#include<iostream>
//定义捐助者结构  :--存储捐献者名字和款项数目的结构数组
struct Donor
{
    std::string name;
    double amount;
};

int main()
{
    int numDonors;
    std::cout << "Please enter the number of donors: ";
    std::cin>>numDonors;

    //动态分配捐助者数组
    Donor* donors = new Donor[numDonors];

    //读取每个捐献者的姓名和款项
    for(int i = 0;i < numDonors;++ i)
    {
        std::cout << "Please enter the name of Donor #"<<i+1<<" : ";
        std::cin>>donors[i].name;
        std::cout << "Please enter the amount of Donor #"<<i+1<<" : ";
        std::cin>>donors[i].amount;
    }

    //显示超过10000捐款者
    bool hasGrandDonors = false;
    std::cout << "\nGrand Donors:\n";
    for(int i = 0;i < numDonors; ++ i)
    {
        if(donors[i].amount>10000)
        {
            std::cout << donors[i].name << " : " << donors[i].amount << std::endl;
            hasGrandDonors = true;
        }

    }
    if(!hasGrandDonors){
        std::cout << "none" << std::endl;
    }

    //显示其他捐款者
    bool hasOtherDonors = false;
    std::cout << "\nPatrons:\n";
    for(int i = 0; i < numDonors; ++ i)
    {
        if(donors[i].amount <= 10000)
        {
            std::cout << donors[i].name << ": " << donors[i].amount << std::endl;
            hasOtherDonors = true;
        }
    }
    if(!hasOtherDonors)
    {
        std::cout << "none"<<std::endl;
    }

    //释放动态分配内存
    delete[] donors;


    return 0;
}
